Принципы ООП: практика
Это полностью практический урок. В нём вас ждёт шесть тренажёрных задач, которые помогут усвоить теорию о принципах ООП. Удачи!
3.
Метод родительского класса
describe даёт очень скудное описание птиц. Исправим это.Для метода
describe в родительском классе добавился параметр full со значением по умолчанию False. Ваша задача — переопределить этот метод для каждого дочернего класса: - если параметр
fullравенFalse, метод должен возвращать стандартное описание птицы из родительского класса; - если параметр
fullравенTrue, метод должен возвращать полное описание птицы.
Полное описание для класса
Parrot :- Попугай
name— заметная птица, окрас её перьев —color, а размер —size. Интересный факт: попугаи чувствуют ритм, а вовсе не бездумно двигаются под музыку. Если сменить композицию, то и темп движений птицы изменится.
Полное описание для класса
Рenguin:- Размер пингвина
nameиз родаgenus—size. Интересный факт: однажды группа геологов-разведчиков похитила пингвинье яйцо, и их принялась преследовать вся стая, не пытаясь, впрочем, при этом нападать. Посовещавшись, похитители вернули птицам яйцо, и те отстали.
Подсказка
В переопределённых методах выполните проверку: если параметр
full равен True, то строкой должно возвращаться полное описание птицы, которое указано в задании, иначе нужно вызвать метод описания из родительского класса.Код
xxxxxxxxxx67
1
23
print(kowalski.describe(True))1
class Bird:2
def __init__(self, name, size):3
self.name = name4
self.size = size5
6
def describe(self, full=False):7
return f'Размер птицы {self.name} — {self.size}.'8
9
10
class Parrot(Bird):11
def __init__(self, name, size, color):12
super().__init__(name, size)13
self.color = color14
# Переопределите метод describe().15
16
17
class Penguin(Bird):18
def __init__(self, name, size, genus):19
super().__init__(name, size)20
self.genus = genus21
# Переопределите метод describe().22
23
24
kesha = Parrot('Ара', 'средний', 'красный')25
kowalski = Penguin('Королевский', 'большой', 'Aptenodytes')26
27
# Вызов метода у созданных объектов.28
print(kesha.describe())29
print(kowalski.describe(True))